The invention is related to the field of data storage systems.
Modern computer systems commonly employ a so-called “open” storage architecture in which data storage is concentrated in specialized data storage systems that are separate from host computer systems for which the data storage is provided. This approach is in contrast to architectures in which data storage is tightly coupled to the hosts, using for example proprietary storage interconnect buses and protocols. Open data storage architectures typically employ standardized storage-oriented buses such as Fibre Channel and specialized networks referred to as “storage area networks” or SANs.
In computer systems utilizing an open storage architecture, storage requests generated by application programs within a host computer are transmitted to the data storage system via a storage bus and/or SAN. The host operating system maintains a host-oriented definition of a remote storage device, such as region of a disk drive located in the data storage system, and the data storage system presents an interface to the remote storage device. For the sake of the present description, the host-oriented definition is referred to as a “host device”; the remote storage device as a “logical device”, and the interface presented by the data storage system a “virtual device”. When an application program generates a storage request such as a request to read or write part of a file to/from a host device, the host operating system issues a corresponding request directed to the corresponding virtual device of the data storage system in which the data is stored. The data storage system then performs the operation on the corresponding logical device. In the case of a read operation, the data storage system returns the requested data to the host computer. Some data storage systems employ a cache of semiconductor memory in order to reduce average data access times. Such data storage systems may be known as “integrated cache/disk arrays” or ICDAs such as sold by EMC Corporation under the trademark Symmetrix®.
Host computers typically employ queues associated with the remote storage devices that they access, these queues being used to temporarily hold storage requests that are either being processed or are waiting to be processed by the target data storage system. Generally, the queued storage requests are performed in the order in which they are placed on the queue. The queues help the operating system manage the processing of a potentially large number of storage requests. However, the queues can contribute to the delay experienced by storage requests. This delay can become significant when the queue for a storage device fills up, which may occur when the rate at which storage requests are generated is greater than the storage device can handle. The delay can also be significant under certain operating conditions when the data storage system employs a cache. A given storage request that might be a cache “hit” (i.e., data is residing in the cache) may be preceded by another storage request that is a cache “miss” (i.e., data not residing in the cache). In this case, the cache hit request must wait for the cache miss to be completed before the cache hit can be sent to the data storage system, potentially increasing its delay by an order of magnitude or more. It is desirable to avoid such delays in the interest of improved system performance.
There are known techniques aimed at reducing queuing-related delays of the type described above. In one approach, multiple host queues and paths are defined for a target logical device residing in a remote data storage system, and software in the host operating system selects among the host queues/paths for the storage requests based on performance criteria. Thus if one queue/path to a logical device is busy when a new storage request is generated within the host, the operating system may place the new storage request on a second queue that is relatively idle. In this way, the average delay for storage requests can be reduced, especially cache hits occurring in the vicinity of cache misses. This technique generally requires duplication of resources both at the host and the data storage system. Each additional path may require its own set of physical ports on the host and/or data storage system, or at least its own set of software mechanisms on the host and/or data storage system to implement the independent additional paths. The duplication is repeated for each target logical device that may be the target of a relatively high rate of storage requests.